import axios from "axios"
import router from "../router"
//通过axios.create方法 配置默认请求属性
const baseURL = process.env.NODE_ENV === 'development' ? "/api" : "服务器地址"

axios.defaults.baseURL = baseURL
axios.create({
    timeout:3000,
    withCredentials:true,  //开启携带认证
   
})

//编写拦截器
//请求拦截器 给每个请求都添加上headers['authorization']
axios.interceptors.request.use(config =>{
    // 将token给到一个前后台约定好的key中，作为请求发送
    // console.log(config);
    let path = router.history.current.path;
    //判断请求路径。如果请求的是登入或者注册接口，直接放行
    if(config.url === "/users/login" || config.url === "/users/regist"){
        return config
    }
    let token = localStorage.getItem("user-token")
    config.headers['authorization'] = token
    return config   //相当于给请求放行
})




//响应拦截器

axios.interceptors.response.use(config =>{
    let {data} = config
    if(data){
        //如果后台返回1004状态码 表示校验失败 返回10022表示后台登录态实效页面需要跳转到登入页 页面要跳转到登录页
        if(data.code === '1004' || data.code === "10022"){
            //这句代码清除token，避免token到期之后还存在localStorage中，形成死循环
            localStorage.removeItem("user-token")

            router.push("/login")
        } else{
            //放行
            return config
        }
    }else { //请求出错
        alert('请求出错')
    }
})


export default axios